6.10.2. 所属検査演算
演算子 in および not in は所属関係を調べます。
x in s の評価は、 x が s の要素であれば True となり、そうでなければ False となります。
x not in s は x in s の否定を返します。
__contains__() メソッドを実装したユーザ定義クラスでは、 y.__contains__(x) の返り値が真となる場合に x in y の返り値は True となり、そうでない場合は False となります。
For user-defined classes which do not define __contains__() but do define __iter__(), x in y is True if some value z, for which the expression x is z or x == z is true, is produced while iterating over y.
__contains__を定義していないが__iter__を定義している場合
Lastly, the old-style iteration protocol is tried: if a class defines __getitem__(), x in y is True if and only if there is a non-negative integer index i such that x is y[i] or x == y[i], and no lower integer index raises the IndexError exception.
__contains__も__iter__も定義していないが、__getitem__を定義している場合